home *** CD-ROM | disk | FTP | other *** search
-
- -------------------------------------------------------------------------------
-
- AMIGA VR TOOLKIT
-
- Pre-Release Notice
-
- February 7, 1994
-
- A complex, flexible, and extremely powerful set of tools that will provide
- the basis for public domain VR software for the AMIGA.
-
- written by Michael P. Schenck mps4466@ultb.isc.rit.edu
-
- -------------------------------------------------------------------------------
-
- The AMIGA VR Toolkit is a library of classes and functions that
- integrate to provide a complete set of tools for constructing, visualizing
- and interacting with virtual environments. The toolkit takes the form
- of an SAS/C 6.5 C++ linkable library.
-
- The toolkit is in development and is heading toward its
- first release. A brief summary of the features that will be contained in the
- toolkit are described below. Some of these have already been developed
- while others are still in the design stage. Much of the initial theory behind
- the functionality of the toolkit is complete. There are alot of details to be
- worked out and choices to be made. If you are interested in having a hand in
- the final design of the toolkit, read the summary and follow the instructions
- at the end.
-
-
- ENVIRONMENT CONSTRUCTION AND CONTROL
- ------------------------------------
-
- PRIMITIVES
-
- A Primitive class allows primitives to be defined and used
- in Objects. Control all aspects of a primitive such as points,
- polygons, colors of the polygons, and eventually things like
- textures and transparencies.
-
- TRANSFORMATIONS
-
- The Transformation class which is used to create the transformation
- objects within the Control Classes contains a variety of standard
- transformations, but can also be customized. Some of the standard
- ones will be all the rotations, translations, scalings, shears, and
- deformations. To set the transformation to a rotation, just specify
- the angle or angles. It's that simple. Setting your own customized
- Matrix is just as easy.
-
- CONTROLS
-
- Objects are controlled through the use of Control classes which add
- control points and govern the movement and design of the Object.
- There are standard and custom Control classes. Some examples
- of standard ones are Hinge and Pivot. Control classes can be made
- by combining Transformation objects and other standard and custom
- "governing" classes which help to control the manipulation of the
- Transformations. These "governing" classes could include classes
- for input such as a PowerGlove class or they could be Physical
- Model based classes or Artificial Intelligence based classes.
-
- OBJECTS
-
- An Object class is comprised of Primitives and different Control
- classes that link together to make up and control the Object.
- Objects can be added and removed from different Worlds. They can be
- activated or deactivated which makes them a portion of the environment
- or not. Objects are the representation of the Entity that controls
- them. Simply, they represent the "bodies" of the Entities.
-
- WORLDS
-
- A World class groups Objects into a single environment which can be
- handled individually. Therefore, multiple worlds can be defined
- and all rendered at once or individually.
-
- ENTITIES
-
- Entities represent the "soul" or the "essence" of an Object. Objects
- are just controllable bodies that exist in the environment. Entities
- give them thier function and thier "intelligence". Entities are not
- specific classes or functions, but a hierarchy of custom classes and
- functions within the application the toolkit is linked too. These
- classes and functions are used to construct, initialize, and control
- the Entity's Object within the environment. They can be comprised of
- logic and control routines or they could simply be a conduit for
- information that is being sent to the Object's Control and Primitive
- objects. Entities can be built up of subclasses that each contain
- a Primitive or Primitives and Control objects which comprise a
- "portion" of the entire Entity. These subclasses provide the
- "essence" for a single portion of the Entity and can be duplicated
- just like copying a variable. For example, you could create a virtual
- robot spider where each leg would be a different object of the same
- subclass and they all would be controlled from a single body object!
-
-
- ENVIRONMENT VISUALIZATION AND RESPONSE
- --------------------------------------
-
- RENDERING ENGINE
-
- At the heart of the toolkit is a pipelined rendering engine. The
- pipeline will consist of two stages. The first stage will be handled
- by the CPU and will consist of updating any changes in any of the
- Worlds (converting primitive coords to world coords via a map of
- transformations for each changed object or portion of changed object
- in each world), detecting collisions and reporting them to objects,
- and creating a raster list of all polygons inside the view volume for
- each Viewpoint. The second stage is handled by the blitter. It will
- be fed the raster list by the CPU in the form of a continuous stream
- of blits. While the blitter is working, the CPU will be back to the
- first stage of the pipeline working on the next frame (if any updates
- or changes have occured in the environment). The overhead in
- switching processes (to feed the blitter more raster ops) will be
- minimal compared to the speed gained by having a pipeline. This will
- be especially true where the processor way outperforms the blitter.
- Even if the CPU is fast, the blitter of course still governs the frame
- rate due to its speed. Therefore, the maximum frame rate will be
- much slower in machines with a slower blitter. The difference between
- AGA and ECS or OCS machines will be significant. Just as the
- difference between AGA and AAA (if it ever comes out) will also be
- significant. The optimum frame rate will be obtained where the time
- to process a frame is approximately equivalent to the time to draw the
- previous frame. This equality is governed by the CPU speed, the
- overall blitter performance (clock rate and bandwidth which is
- dependent on the amount of DMA available to it), and the scene
- complexity from frame to frame.
-
- GRAPHICS MODES
-
- The graphics supported by the rendering engine are wireframe and
- solid shaded polygons. In the shaded polygon mode, special effects
- may be added such as textures or transparency. These of course will
- come at a later date, but will be figured into the initial design.
- Hidden surface removal is in the form of a painters algorithm
- which will probably be modified. This is to maintain a decent frame
- rate and to remove most visual artifacts from the scene.
-
- LIGHTING
-
- Lighting is simple. Primarily ambient light and a single light
- vector. This may get more complicated later.
-
- COLLISION DETECTION
-
- -Collision in the environment is optional, but designed in. This
- is due to the large amount of extra computation it requires.
-
-
- SYSTEM CONTROL AND INTERFACING
- ------------------------------
-
- VIEWPORTS AND VIEWPOINTS
-
- Viewport and Viewpoint classes provide multiple and simultaneous views
- into one or more environments. You can look at the same or different
- worlds at the same time and from different positions.
-
- TEXT AND GRAPHICS
-
- Support for Text and Graphics through the Viewports. These are in
- the form of various functions and classes.
-
- SIMULATION TIMING
-
- A Timer class provides all the simulation timing required.
-
- SOUND AND MUSIC
-
- Classes for sound and music which can be used in an Entity or
- Control class. This will come later, not a high priority.
-
- I/O INTERFACE
-
- Classes for linking I/O to Objects are in the form of Control
- classes. These use basic I/O classes and functions combined
- with Transformation objects to directly map input from the user to
- the control point represented by the Transformation object(s). All the
- systems resources such as serial ports, parallel ports, the keyboard
- and the mouse will all be available through functions or classes
- provided by the toolkit.
-
- COMPUTATION
-
- The core of the computation performed by the toolkit will be performed
- in fixed point integer math, but it will seem from a an application
- stand point that the toolkit uses floating point math. This is to allow
- applications to gain from using simplistic and accurate floating point
- while the toolkit itself works in a tricker form of fixed point integer
- math. Inputs into the toolkit (in floating point values) will have
- to be limited in size. This means that there will be a maximum
- and minimum value imposed on the actual value of the numbers passed
- in. This will probably not cause a problem in nearly all situations.
-
-
- BENIFITS, PROBLEMS, AND PLANS
-
- The design for this toolkit is very strong in the creation and
- control of complex environments. This is where it shines and is by far
- the most important part. But having a complex environment rendered at 2
- frames a second isn't so good. In my attempt to make this an extremly
- powerful toolkit for AMIGA VR, I am also attempting to design a powerful
- enough rendering engine to back it up. This requires alot of optimization,
- tricks, and understanding to develop a fast rendering engine. We do have
- the blitter to aid us, but it isn't the end all of aids for rendering!
- This toolkit, over time, will probably reflect the best effort possible
- to use the blitter for rendering complex 3D environments in conjuction
- with the CPU! I am personally looking forward to AAA's increase in blitter
- speed which when combined with a 68060 or RISC CPU could give this toolkit
- that sharp edge provided by a robust frame rate!
-
- I am happy to say that this software will all be free. I only ask that
- you participate in its development. It could very well become the best
- PD VR Toolkit around with a little work! So...
-
- IF YOU ARE INTERESTED IN THE DEVELOPMENTS OF THIS TOOLKIT AS IT
- WORKS ITS WAY TO THE FIRST RELEASE AND WANT TO EXPRESS YOUR
- IDEAS AND/OR CONCERNS ABOUT THE DESIGN OF THE TOOLKIT OR JUST
- WANT TO BE KEPT INFORMED OF ITS PROGRESS, SEND ME AN EMAIL MESSAGE
- STATING SO AND I WILL PUT YOU ON A MAILING LIST AND KEEP YOU
- UPDATED. I AM LOOKING FOR INPUT IN THE DESIGN PROCESS BECAUSE
- THIS IS BY FAR THE MOST IMPORTANT PART. I WANT YOUR THOUGHTS,
- CONCERNS, AND CRITICISMS!
-
-
- Send email to...
-
- Michael P. Schenck
-
- at
-
- mps4466@ultb.isc.rit.edu
-
-
- THANK YOU IN ADVANCE FOR YOUR INTEREST AND EFFORT
-